#函数 将代码独立成一个块,方便调用
#定义 def 函数名(参数a,参数b...):
#        函数体
def hello():
    print("这是欢迎函数,hello")
    return "hello"
#调用 函数名(参数a,参数b...) 调用函数前,函数必须先被定义
hello()
#返回值 return 函数调用结束后返回的数值 返回多个值,用元组的形式返回 没有返回值,则返回None
print(hello())
#形参 定义时参数 实参 调用时参数
def add(a,b):
    return a+b
print(add(1,2))
#必备参数,形参与实参数量必须相同,位置也是按顺序的
#默认参数,没有传值时会默认给参数赋值 位置参数(可以理解为普通参数)必须都放在默认参数前
def fun1(a=10):
    return a
print(fun1())
print(fun1(12))
#可变参数,参数前加*号 可以不传会传多个值 通过元组接收
def fun2(*a):
    return a
print(fun2())
print(fun2(1))
print(fun2(1,2))
#关键字参数 参数前加两个* 用字典方式传参,用字典方式接收
def fun3(**a):
    return a
print(fun3())
print(fun3(name="我",age=18))
#函数嵌套
#嵌套调用,在一个函数里面调用另一个函数
#嵌套定义,在一个函数里面定义另一个函数

